package grafico;

import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTabbedPane;
import javax.swing.SwingConstants;

import voxToolkit.*;

public class DlgConfigs extends JDialog implements ActionListener{

	static final long serialVersionUID = 1;
	
	
	public DlgConfigs(){
		setSize(new Dimension(650,530));
		setTitle("Configurações");

		Container principal = this.getContentPane();
		principal.setBackground(Fabrica.background);

		//JTabbedPane painelAbas = new JTabbedPane();
		VoxTabbedPane painelAbas = new VoxTabbedPane();

		painelAbas.setFont(Fabrica.fonteMedia);
		painelAbas.setBackground(Fabrica.azulMedio);
		painelAbas.setForeground(Fabrica.branco);

		JPanel painelBotoes = Fabrica.painelFundoAzul();
		painelBotoes.setLayout(new BoxLayout(painelBotoes,BoxLayout.LINE_AXIS));
		painelBotoes.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
		painelBotoes.add(Box.createHorizontalGlue());
		VoxButton btOk = new VoxButton("ok", "Ok");
		btOk.addActionListener(this);
		painelBotoes.add(btOk);
		painelBotoes.add(Box.createRigidArea(new Dimension(20, 0)));
		VoxButton btCancel = new VoxButton("cancel","Cancelar");
		btCancel.addActionListener(this);
		painelBotoes.add(btCancel);
		
		
		/*
		 * Configurações de som
		 */
		JPanel som = Fabrica.painelFundoAzul();
		som.setLayout(new BoxLayout(som, BoxLayout.Y_AXIS));	
		som.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
		
		JPanel pnVelocidade = Fabrica.painelFundoAzul();
		pnVelocidade.setAlignmentX(CENTER_ALIGNMENT);
		pnVelocidade.setLayout(new BoxLayout(pnVelocidade, BoxLayout.Y_AXIS));
		JLabel lbVelocidade = Fabrica.labelBranco("Velocidade");
		lbVelocidade.setFocusable(false);
		lbVelocidade.setAlignmentX(CENTER_ALIGNMENT);
		pnVelocidade.add(lbVelocidade);
		VoxSlider slVelocidade = new VoxSlider(SwingConstants.HORIZONTAL, 0, 100, 50, "Velocidade");
		slVelocidade.setMaximumSize(new Dimension(400,15));
		slVelocidade.setPreferredSize(new Dimension(400,15));
		slVelocidade.setMinimumSize(new Dimension(400,15));
		pnVelocidade.add(slVelocidade);
		som.add(pnVelocidade);
		som.add(Box.createRigidArea(new Dimension(0,20)));
				
		JPanel pnVolume = Fabrica.painelFundoAzul();
		pnVolume.setLayout(new BoxLayout(pnVolume, BoxLayout.Y_AXIS));
		pnVolume.setAlignmentX(CENTER_ALIGNMENT);
		JLabel lbVolume = Fabrica.labelBranco("Volume");
		lbVolume.setFocusable(false);
		lbVolume.setAlignmentX(CENTER_ALIGNMENT);
		pnVolume.add(lbVolume);
		VoxSlider slVolume = new VoxSlider(SwingConstants.HORIZONTAL, 0, 100, 50, "Volume");
		slVolume.setMaximumSize(new Dimension(400,15));
		slVolume.setPreferredSize(new Dimension(400,15));
		slVolume.setMinimumSize(new Dimension(400,15));
		pnVolume.add(slVolume);
		som.add(pnVolume);
		som.add(Box.createRigidArea(new Dimension(500,30)));
		//som.add(controle2);
		//som.add(Box.createRigidArea(new Dimension(500,30)));
				
		JPanel painel_inferior = Fabrica.painelFundoAzul();
		painel_inferior.setPreferredSize(new java.awt.Dimension(400, 50));
		painel_inferior.setLayout(new BoxLayout(painel_inferior,BoxLayout.X_AXIS));
		som.add(painel_inferior, BorderLayout.SOUTH);
		painelAbas.add("Som",som);
		
		/*
		 * Sintetizador
		 */		
		
		JPanel pnSintetizador = Fabrica.painelFundoAzul();
		pnSintetizador.setLayout(new BoxLayout(pnSintetizador,BoxLayout.Y_AXIS));
		pnSintetizador.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
		
		JPanel pnNomeVoz = Fabrica.painelFundoAzul();
		pnNomeVoz.setLayout(new BoxLayout(pnNomeVoz, BoxLayout.Y_AXIS));
		pnNomeVoz.setAlignmentX(LEFT_ALIGNMENT);
		JLabel lbNomeVoz = Fabrica.labelBranco("Nome da Voz");
		lbNomeVoz.setFocusable(false);
		lbNomeVoz.setAlignmentX(LEFT_ALIGNMENT);
		pnNomeVoz.add(lbNomeVoz);
		String[] vozes = { "Voz 1", "Voz 2"};
		//JComboBox cbNomeVoz = new JComboBox(vozes);
		VoxCombo cbNomeVoz = new VoxCombo(vozes,"cbNomeVoz","Nome da Voz");
		cbNomeVoz.setToolTipText(Fabrica.criaToolTip("Nome da Voz"));
		cbNomeVoz.setFont(Fabrica.fonteMedia);
		cbNomeVoz.setAlignmentX(LEFT_ALIGNMENT);
		cbNomeVoz.setMaximumSize(new Dimension(200,30));
		pnNomeVoz.add(cbNomeVoz);
		pnSintetizador.add(Box.createRigidArea(new Dimension(0,10)));
		pnSintetizador.add(pnNomeVoz);
		pnSintetizador.add(Box.createRigidArea(new Dimension(0,10)));
		
		JPanel pnEco = Fabrica.painelFundoAzul();
		pnEco.setLayout(new BoxLayout(pnEco, BoxLayout.Y_AXIS));
		pnEco.setAlignmentX(LEFT_ALIGNMENT);
		VoxCheckBox ckEco = new VoxCheckBox("Eco da Digitação");
		ckEco.setAlignmentX(LEFT_ALIGNMENT);
		ckEco.setBackground(Fabrica.background);
		ckEco.setFont(Fabrica.fonteMedia);
		ckEco.setForeground(Fabrica.branco);
        ckEco.setSelected(true);
        pnEco.add(ckEco);
        pnSintetizador.add(pnEco);
        
        painelAbas.add("Sintetizador",pnSintetizador);
		
        /*
         * Visualização de Texto
         */
		JPanel pnVisualizacao = Fabrica.painelFundoAzul();
		pnVisualizacao.setLayout(new BoxLayout(pnVisualizacao,BoxLayout.Y_AXIS));		
		pnVisualizacao.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
		
		JPanel pnNavAutomatica = Fabrica.painelFundoAzul();
		pnNavAutomatica.setLayout(new BoxLayout(pnNavAutomatica, BoxLayout.Y_AXIS));
		pnNavAutomatica.setAlignmentX(LEFT_ALIGNMENT);
		VoxCheckBox ckNavegacao = new VoxCheckBox("Navegação Automática");
		ckNavegacao.setBackground(Fabrica.background);
		ckNavegacao.setFont(Fabrica.fonteMedia);
		ckNavegacao.setForeground(Fabrica.branco);
        ckNavegacao.setSelected(true);
        pnNavAutomatica.add(ckNavegacao);
        pnVisualizacao.add(Box.createRigidArea(new Dimension(0,10)));
		pnVisualizacao.add(pnNavAutomatica);
		pnVisualizacao.add(Box.createRigidArea(new Dimension(0,10)));
		
		JPanel pnTamFonte = Fabrica.painelFundoAzul();
		pnTamFonte.setLayout(new BoxLayout(pnTamFonte, BoxLayout.Y_AXIS));
		pnTamFonte.setAlignmentX(LEFT_ALIGNMENT);
		JLabel lbFonte = Fabrica.labelBranco("Tamanho da fonte");
		lbFonte.setFocusable(false);
		lbFonte.setAlignmentX(LEFT_ALIGNMENT);
		pnTamFonte.add(lbFonte,BoxLayout.X_AXIS);
		String[] fontes  = { "100%", "125%", "150%", "175%", "200%" };
		//JComboBox cbFonte = new JComboBox(fontes);
		VoxCombo cbFonte = new VoxCombo(fontes,"cbFonte","Fonte");
		cbFonte.setAlignmentX(LEFT_ALIGNMENT);
		cbFonte.setMaximumSize(new Dimension(120,30));
		cbFonte.setPreferredSize(new Dimension(120,30));
		//cbFonte.setFont(Fabrica.fonteMedia);
		pnTamFonte.add(cbFonte);
		pnVisualizacao.add(pnTamFonte);
		pnVisualizacao.add(Box.createRigidArea(new Dimension(0,10)));

		JPanel pnCorFonte = Fabrica.painelFundoAzul();
		pnCorFonte.setLayout(new BoxLayout(pnCorFonte,BoxLayout.Y_AXIS));
		pnCorFonte.setAlignmentX(LEFT_ALIGNMENT);
		JLabel lbCorFonte = Fabrica.labelBranco("Cor da fonte");
		lbCorFonte.setFocusable(false);
		lbCorFonte.setAlignmentX(LEFT_ALIGNMENT);
		pnCorFonte.add(lbCorFonte);
		String[] coresFonte = {"azul","branco","preto","amarelo","vermelho"};
		//JComboBox cbCoresFonte = new JComboBox(coresFonte);
		VoxCombo cbCoresFonte = new VoxCombo(coresFonte,"cbCoresFonte","Cor da fonte");
		cbCoresFonte.setAlignmentX(LEFT_ALIGNMENT);
		cbCoresFonte.setMaximumSize(new Dimension(120,30));
		cbCoresFonte.setPreferredSize(new Dimension(120,30));
		//cbCoresFonte.setFont(Fabrica.fonteMedia);
		pnCorFonte.add(cbCoresFonte);
		pnVisualizacao.add(pnCorFonte);
		pnVisualizacao.add(Box.createRigidArea(new Dimension(0,10)));
		
		JPanel pnCorFundo = Fabrica.painelFundoAzul();
		pnCorFundo.setLayout(new BoxLayout(pnCorFundo,BoxLayout.Y_AXIS));
		pnCorFundo.setAlignmentX(LEFT_ALIGNMENT);
		JLabel lbCorFundo = Fabrica.labelBranco("Cor do fundo");
		lbCorFundo.setFocusable(false);
		lbCorFundo.setAlignmentX(LEFT_ALIGNMENT);
		pnCorFundo.add(lbCorFundo);
		String[] coresFundo = {"azul","branco","preto","amarelo","vermelho"};
		//JComboBox cbCoresFundo = new JComboBox(coresFundo);
		VoxCombo cbCoresFundo = new VoxCombo(coresFundo,"cbCoresFundo","Cor do fundo");
		cbCoresFundo.setAlignmentX(LEFT_ALIGNMENT);
		cbCoresFundo.setMaximumSize(new Dimension(120,30));
		cbCoresFundo.setPreferredSize(new Dimension(120,30));
		//cbCoresFundo.setFont(Fabrica.fonteMedia);
		pnCorFundo.add(cbCoresFundo);
		pnVisualizacao.add(pnCorFundo);
		pnVisualizacao.add(Box.createRigidArea(new Dimension(0,10)));
		
		JPanel pnCorFonteDest = Fabrica.painelFundoAzul();
		pnCorFonteDest.setLayout(new BoxLayout(pnCorFonteDest,BoxLayout.Y_AXIS));
		pnCorFonteDest.setAlignmentX(LEFT_ALIGNMENT);
		JLabel lbCorFonteDest = Fabrica.labelBranco("Cor da fonte do destacado");
		lbCorFonteDest.setFocusable(false);
		lbCorFonteDest.setAlignmentX(LEFT_ALIGNMENT);
		pnCorFonteDest.add(lbCorFonteDest);
		String[] coresFonteDest = {"azul","branco","preto","amarelo","vermelho"};
		//JComboBox cbCoresFonteDest = new JComboBox(coresFonteDest);
		VoxCombo cbCoresFonteDest = new VoxCombo (coresFonteDest,"cbCoreFonteDest","Cor da fonte destacada");
		cbCoresFonteDest.setAlignmentX(LEFT_ALIGNMENT);
		cbCoresFonteDest.setMaximumSize(new Dimension(120,30));
		cbCoresFonteDest.setPreferredSize(new Dimension(120,30));
		//cbCoresFonteDest.setFont(Fabrica.fonteMedia);
		pnCorFonteDest.add(cbCoresFonteDest);
		pnVisualizacao.add(pnCorFonteDest);
		pnVisualizacao.add(Box.createRigidArea(new Dimension(0,10)));
		
		JPanel pnCorFundoDest = Fabrica.painelFundoAzul();
		pnCorFundoDest.setLayout(new BoxLayout(pnCorFundoDest,BoxLayout.Y_AXIS));
		pnCorFundoDest.setAlignmentX(LEFT_ALIGNMENT);
		JLabel lbCorFundoDest = Fabrica.labelBranco("Cor do fundo do destacado");
		lbCorFundoDest.setFocusable(false);
		lbCorFundoDest.setAlignmentX(LEFT_ALIGNMENT);
		pnCorFundoDest.add(lbCorFundoDest);
		String[] coresFundoDest = {"azul","branco","preto","amarelo","vermelho"};
		//JComboBox cbCoresFundoDest = new JComboBox(coresFundoDest);
		VoxCombo cbCoresFundoDest = new VoxCombo(coresFundoDest,"cbCoresFundoDest","Cor do fundo destacado");
		cbCoresFundoDest.setAlignmentX(LEFT_ALIGNMENT);
		cbCoresFundoDest.setMaximumSize(new Dimension(120,30));
		cbCoresFundoDest.setPreferredSize(new Dimension(120,30));
		//cbCoresFundoDest.setFont(Fabrica.fonteMedia);
		pnCorFundoDest.add(cbCoresFundoDest);
		pnVisualizacao.add(pnCorFundoDest);
		pnVisualizacao.add(Box.createRigidArea(new Dimension(0,10)));
		
		painelAbas.add("Visualização",pnVisualizacao);		
		
		/*
		 * Apresentação de elementos do texto
		 */
		JPanel pnApresElementosTexto = Fabrica.painelFundoAzul();
		pnApresElementosTexto.setLayout(new BoxLayout(pnApresElementosTexto,BoxLayout.Y_AXIS));
		pnApresElementosTexto.setBorder(BorderFactory.createEmptyBorder(5,5,5,5));
		
		JPanel pnNotasRodape = Fabrica.painelFundoAzul();
		pnNotasRodape.setLayout(new BoxLayout(pnNotasRodape, BoxLayout.Y_AXIS));
		//JCheckBox ckNotasRodape = new JCheckBox("Exibir notas de rodapé");
		VoxCheckBox ckNotasRodape = new VoxCheckBox("Exibir notas de rodapé");
		ckNotasRodape.setBackground(Fabrica.background);
		ckNotasRodape.setFont(Fabrica.fonteMedia);
		ckNotasRodape.setForeground(Fabrica.branco);
		ckNotasRodape.setSelected(true);
        pnNotasRodape.add(ckNotasRodape);
        //pnApresElementosTexto.add(Box.createRigidArea(new Dimension(10,0)));
		pnApresElementosTexto.add(pnNotasRodape);
		JPanel pnNumsPagina = Fabrica.painelFundoAzul();
		pnNumsPagina.setLayout(new BoxLayout(pnNumsPagina, BoxLayout.Y_AXIS));
		VoxCheckBox ckNumsPagina = new VoxCheckBox("Exibir números de página");
		ckNumsPagina.setBackground(Fabrica.background);
		ckNumsPagina.setFont(Fabrica.fonteMedia);
		ckNumsPagina.setForeground(Fabrica.branco);
		ckNumsPagina.setSelected(true);
        pnNumsPagina.add(ckNumsPagina);
        pnApresElementosTexto.add(Box.createRigidArea(new Dimension(10,0)));
		pnApresElementosTexto.add(pnNumsPagina);
		pnApresElementosTexto.add(Box.createRigidArea(new Dimension(10,0)));
		pnApresElementosTexto.setPreferredSize(new Dimension(60,70));
		pnApresElementosTexto.setMaximumSize(new Dimension(600,70));
		painelAbas.add("Elementos do Texto",pnApresElementosTexto);

		principal.add(painelAbas,BorderLayout.CENTER);
		principal.add(painelBotoes,BorderLayout.PAGE_END);
		setModal(true);
		//this.setResizable(false);
	}
	
	public void acaoBotao(VoxButton botao){
		if (botao.getNome().equals("ok")){
			//salvar alterações no Contexto
			dispose();			
		}
		else if (botao.getNome().equals("cancel")){
			dispose();		
		}
	}

	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getSource() instanceof VoxButton){
			acaoBotao( (VoxButton)e.getSource() );
		}
		
	}
	
}